const MAX_WORDS_NUM = 140; // 输入文字最大个数
const MAX_IMG_NUM = 9; // 最大上传图片数量

const db = wx.cloud.database();

let content = "";
let userInfo = {};

Page({

  /**
   * 页面的初始数据
   */
  data: {
    wordsNum: 0, // 输入的文本
    footerBottom: 0,
    images: [], // 已经选择的图片
    selectPhoto: true, // 添加图片元素是否显示
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad: function(options) {
    // console.log(options);
    userInfo = options;
  },

  onInput(e) {
    // console.log(e.detail.value);
    let wordsNum = e.detail.value.length;
    if (wordsNum >= MAX_WORDS_NUM) {
      wordsNum = `最大字数为${MAX_WORDS_NUM}`;
    }
    content = e.detail.value;
    this.setData({
      wordsNum
    });
  },
  onFocus(e) { // 获取焦点
    // console.log(e);
    this.setData({
      footerBottom: e.detail.height
    });
  },
  onBlur(e) { // 失去焦点
    this.setData({
      footerBottom: 0
    });
  },
  // 选择图片
  onChooseImage() {
    let max = MAX_IMG_NUM - this.data.images.length;
    wx.chooseImage({
      count: max,
      sizeType: ['original', 'compressed'],
      sourceType: ['album', 'camera'],
      success: (res) => {
        // console.log(res);
        this.setData({
          images: this.data.images.concat(res.tempFilePaths)
        });
        // if (this.data.images.length >= MAX_IMG_NUM) {
        //   this.setData({
        //     selectPhoto: false
        //   });
        // }
        // 还能选几张
        max = MAX_IMG_NUM - this.data.images.length;
        this.setData({
          selectPhoto: max <= 0 ? false : true
        });
      },
    })
  },
  //  删除图片
  onDelImage(e) {
    // console.log(e);
    let index = e.currentTarget.dataset.index;
    // let images = this.delArray(this.data.images, index);
    // this.setData({
    //   images
    // });
    this.data.images.splice(index, 1);
    this.setData({
      images: this.data.images
    });
    if (this.data.images.length == MAX_IMG_NUM - 1) {
      this.setData({
        selectPhoto: true
      });
    }
  },
  // 数组删除
  delArray(arr, index) {
    let len = arr.length;
    if (len > 1) {
      if (index > 0 && index < len) {
        var arr1 = arr.slice(0, index);
        var arr2 = arr.slice(index + 1, len);
        return arr1.concat(arr2);
      }
      if (index == 0) {
        return arr.slice(1, len);
      }
      if (index == len) {
        return arr.slice(0, len - 1);
      }
    } else {
      return [];
    }
  },
  // 图片预览
  onPreviewImage(e) {
    wx.previewImage({
      urls: this.data.images,
      current: e.target.dataset.imgsrc
    });
  },
  // 发布
  send() {
    if (content.trim() == "") {
      wx.showModal({
        title: '请输入内容',
        content: '',
      });
      return;
    }

    wx.showLoading({
      title: '发布中...',
    });

    // 2、数据 -> 云数据库
    // 数据库：内容、图片fileID、openid、昵称、头像、时间
    // 1、图片 -> 云存储 fileID 云文件ID

    let promiseArr = [];
    let fileIds = [];
    // 图片上传（上传到云端）每次只能上传一张图片
    for (let i = 0, len = this.data.images.length; i < len; i++) {
      let p = new Promise((resolve, reject) => {
        let item = this.data.images[i];
        // 文件扩展名
        let suffix = /\.\w+$/.exec(item)[0];
        wx.cloud.uploadFile({
          cloudPath: "blog/" + Date.now() + "_" + Math.random() * 10000000 + suffix, // 上传到云端的参数
          filePath: item, // 文件的临时路径
          success: (res) => {
            // console.log(res);
            fileIds = fileIds.concat(res.fileID);
            resolve();
          },
          fail: (err) => {
            console.error(err);
            reject();
          }
        });
      });
      promiseArr.push(p);
    }

    // 存入到云数据库
    Promise.all(promiseArr).then((res) => {
      db.collection("blog").add({ // 会自带openid属性
        data: {
          ...userInfo,
          content,
          img: fileIds,
          createTime: db.serverDate() // 服务端的时间
        }
      }).then((res) => {
        wx.hideLoading();
        wx.showToast({
          title: '发布成功',
        });
        // 返回blog页面，并且刷新blog页面
        // wx.navigateBack({
        //   data: 1,
        //   success: (res) => {
        //     let page = getCurrentPages().pop();
        //     if (page == undefined || page == null) {
        //       return;
        //     }
        //     page.onLoad();
        //   }
        // });
        wx.navigateBack();
        const pages = getCurrentPages();
        // 取到上一个页面
        const prevPage = pages[pages.length - 2];
        prevPage.onPullDownRefresh();
         
      }).catch((err) => {
        wx.hideLoading();
        wx.showToast({
          title: '发布失败',
        });
      });
    });

  },
  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady: function() {

  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow: function() {

  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide: function() {

  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload: function() {

  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh: function() {

  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom: function() {

  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage: function() {

  }
})